(computer science) a programming language that enables the programmer to associate a set of procedures with each type of data structure